The present invention relates to data storage, and more specifically, this invention relates to improving performance of multi-tiered data storage systems.
The cost per unit (e.g., Gigabyte) of storage is typically higher for higher performance (e.g., faster) memory than it is for relatively lower performance memory. Thus, tiers of memory having different performance characteristics may be grouped together to form a multi-tiered data storage system.
The capacity of a higher performance data storage tier is typically smaller than the capacity of a lower data storage tier in view of their relative price. In order to maintain an efficient use of the higher performing, yet typically smaller, data storage tier, algorithms may be implemented to relocate data based on a temperature associated therewith. For example, “hotter” data may be migrated towards the higher storage tier (e.g., promoted), while “colder” data is migrated towards the slower tier (e.g., demoted). In the present context, the heat (e.g., “hotter” and “colder”) of data refers to the rate (e.g., frequency) at which the data is updated. Memory blocks that are considered “hot” or “hotter” tend to have a frequent updated rate, while memory blocks that are considered “cold” or “colder” have an update rate which is at least slower than that of hot blocks. Additional factors may be incorporated into the determination of the relative heat of a given portion of data, e.g., such as read frequency. It follows that this promotion and demotion process of data actually relocates the data from one tier to another, and may even be performed without the knowledge of an application that is running.
However, some higher performance data storage tiers have a limited write endurance. In other words, some higher performance data storage tiers, such as solid state drives (SSDs), may only be able to undergo a finite number of write cycles before the memory cells therein begin to fail. Conventional products attempt to address this issue of such storage tiers by implementing wear-leveling. Wear-leveling attempts to achieve an even distribution of write cycles across all memory cells in the data storage tier, thereby achieving an about equal wear rate for the various memory cells. Yet, this process only addresses the relative wear rate of each memory cell with respect to each other and does not prolong the effective lifetime of the data storage tier as a whole.